Cargamos los datos.
Añadimos la primera columna del dataframe, los distritos. También la población de cada distrito y el porcentaje de extranjeros (https://www.idescat.cat/poblacioestrangera/?geo=mun%3A080193&b=10&lang=es&t=2019).
distrito <-filter(b_persRespuestas, Nom_variable == 'DISTRICTE')
df<-data.frame(distrito = distrito$Resposta)
pop <- fread('Poblacion2018.csv', encoding= 'Latin-1')
df <- cbind(df, pop[1:10,2],pop[1:10,5])
names(df)[2] = "pop"
names(df)[3] = "porex" #porcentaje de extranjeros
distrito <- NULL
pop <- NULL
for(j in 1:nrow(df)){
df[j,3]<-str_replace_all(df[j,3],"[[:punct:]]", ".")}
df[,3]<-as.numeric(df[,3])
Delitos cometidos en es distrito.
temp<-as.data.frame(table(hechos$DISTRICTE_FET))
temp<-temp[c(1:5,9:13),]
temp[,1]<-sort(temp[,1]) #Ordenamos para añadir los datos
df <- df[order(df$distrito), ]
df <- cbind(df,temp$Freq)
names(df)[4] = "frec_delitos_lug" #Delitos cometidos en ese distrito
Víctimas residentes en cada distrito.
temp<-hechos %>%
group_by(NUMQ) %>%
slice(1)
temp<-temp %>%
group_by(DISTRICTE_RES) %>%
summarise(n = n())
df <- cbind(df,temp$n)
names(df)[5] = "Victimas_res" # Víctimas en cada distrito
Número de encuestados por distrito.
temp<-personas %>%
group_by(DISTRICTE) %>%
summarise(n = n())
df <- cbind(df,temp$n)
names(df)[6] = "encuestadosXdis" # Encuestadxs en cada distrito
Valoración de los mossos, la guardia urbana, la seguridad en el barrio de residencia y la seguridad de Barcelona en general.
temp<-personas[,c(1,6,78:81)]
temp <- temp %>%
mutate(VAL_MOSSOS = ifelse(VAL_MOSSOS == "0 = DONEN UN SERVEI PÈSSIM",0, VAL_MOSSOS)) %>%
mutate(VAL_MOSSOS = ifelse(VAL_MOSSOS == "10 = DONEN UN SERVEI EXCEL·LENT",10, VAL_MOSSOS)) %>%
mutate(VAL_MOSSOS = ifelse(VAL_MOSSOS == "NO HO SAP",NA, VAL_MOSSOS)) %>%
mutate(VAL_MOSSOS = ifelse(VAL_MOSSOS == "NO CONTESTA",NA, VAL_MOSSOS)) %>%
mutate(VAL_GUB = ifelse(VAL_GUB == "0 = DONEN UN SERVEI PÈSSIM",0, VAL_GUB)) %>%
mutate(VAL_GUB = ifelse(VAL_GUB == "10 = DONEN UN SERVEI EXCEL·LENT",10, VAL_GUB)) %>%
mutate(VAL_GUB = ifelse(VAL_GUB == "NO HO SAP",NA, VAL_GUB)) %>%
mutate(VAL_GUB = ifelse(VAL_GUB == "NO CONTESTA",NA, VAL_GUB)) %>%
mutate(VAL_SEGUR_BARRI = ifelse(VAL_SEGUR_BARRI == "0 = NO HI HA GENS DE SEGURETAT",0, VAL_SEGUR_BARRI)) %>%
mutate(VAL_SEGUR_BARRI = ifelse(VAL_SEGUR_BARRI == "10 = HI HA MOLTA SEGURETAT",10, VAL_SEGUR_BARRI)) %>%
mutate(VAL_SEGUR_BARRI = ifelse(VAL_SEGUR_BARRI == "NO HO SAP",NA, VAL_SEGUR_BARRI)) %>%
mutate(VAL_SEGUR_BARRI = ifelse(VAL_SEGUR_BARRI == "NO CONTESTA",NA, VAL_SEGUR_BARRI)) %>%
mutate(VAL_SEGUR = ifelse(VAL_SEGUR == "0 = NO HI HA GENS DE SEGURETAT",0, VAL_SEGUR)) %>%
mutate(VAL_SEGUR = ifelse(VAL_SEGUR == "10 = HI HA MOLTA SEGURETAT",10, VAL_SEGUR)) %>%
mutate(VAL_SEGUR = ifelse(VAL_SEGUR == "NO HO SAP",NA, VAL_SEGUR)) %>%
mutate(VAL_SEGUR = ifelse(VAL_SEGUR == "NO CONTESTA",NA, VAL_SEGUR))
temp$VAL_MOSSOS<-as.numeric(temp$VAL_MOSSOS)
temp$VAL_GUB<-as.numeric(temp$VAL_GUB)
temp$VAL_SEGUR_BARRI<-as.numeric(temp$VAL_SEGUR_BARRI)
temp$VAL_SEGUR<-as.numeric(temp$VAL_SEGUR)
cunas<-data.frame(colSums(is.na(temp)))
cunas<-cunas*100/nrow(temp)
names(cunas) = "% NAs"
t(cunas)
## NUMQ DISTRICTE VAL_MOSSOS VAL_GUB VAL_SEGUR_BARRI VAL_SEGUR
## % NAs 0 0 12.77407 13.5367 2.478551 5.624404
# Eliminamos los NA
temp <-filter(temp, !is.na(temp[,3]))
temp <-filter(temp, !is.na(temp[,4]))
temp <-filter(temp, !is.na(temp[,5]))
temp <-filter(temp, !is.na(temp[,6]))
VAL_MOSSOS <- temp %>%
group_by(DISTRICTE) %>%
summarise(mean = mean(VAL_MOSSOS))
names(VAL_MOSSOS)[2] = "VAL_MOSSOS"
VAL_GUB <- temp %>%
group_by(DISTRICTE) %>%
summarise(mean = mean(VAL_GUB))
names(VAL_GUB)[2] = "VAL_GUB"
VAL_SEGUR_BARRI <- temp %>%
group_by(DISTRICTE) %>%
summarise(mean = mean(VAL_SEGUR_BARRI))
names(VAL_SEGUR_BARRI)[2] = "VAL_SEGUR_BARRI"
VAL_SEGUR <- temp %>%
group_by(DISTRICTE) %>%
summarise(mean = mean(VAL_SEGUR))
names(VAL_SEGUR)[2] = "VAL_SEGUR"
df <- cbind(df,VAL_MOSSOS[,2],VAL_GUB[,2],VAL_SEGUR_BARRI[,2],VAL_SEGUR[,2])
Establecimientos de venta de licor y denuncias contra la policía.
df["esta_licor"]<-c(62,97,28,3,11,24,5,10,19,26)
df["denu_poli"]<-c(50276,59391,9768,10022,8723,9400,12041,27604,25608,11243)
Coincidencia distrito de residencia y del hecho.
df["coincide"]<-c(27,46,9,9,9,14,11,36,22,18)
Renta per cápita, 2018.
df["renta"]<-c(15255,24140,23071,19697,29352,14891,17336,20609,18274,32156)
Comisarías de Guardia Urbana, Comisarías de Mossos.
df["co_moss"]<-1
df["co_Gub"]<-c(2,2,1,1,1,1,1,1,2,1)
Colegios y áreas de juego infantil.
df["colegios"]<-c(18,41,27,39,20,37,32,47,35,42)
df["areasjuego"]<-c(26,64,30,73,33,79,70,114,54,47)
Parques y jardines y areas de perros.
df["parques"]<-c(7,49,3,13,8,8,4,12,22,22)
df["arperros"]<-c(3,11,10,13,10,6,12,18,10,18)
Denuncias ordenanza convivencia ciudadana.
df["de_conv_ciu"]<-c(40814,5606,4356,382,274,656,522,14479,4859,1571)
Molestias en espacios públicos (avisos policía).
df["molespub"]<-c(6572,3548,1710,1337,804,2049,1618,3370,2776,1430)
Hechos conocidos por los mossos.
df["conocidos_mossos"]<-c(50436,59552,9722,9996,8627,9226,12017,27481,25658,11118)
Detenciones por la policía.
df["detenciones"]<-c(5844,3964,351,507,684,754,531,1905,2115,421)
Índice de victimización.
df["indicevictimi"]<-c(45.2,33.4,33.1,31.6,26.2,25.5,27.6,32.0,26.0,29.8)
Corregimos las variables por población.
df$comisarias<-colSums(df[,15:16])
df <- df %>%
mutate(esta_licor = (esta_licor/pop)*100000)%>%
mutate(denu_poli = (denu_poli/pop)*100000)%>%
mutate(comisarias = (comisarias/pop)*100000)%>%
mutate(coincide = (coincide/pop)*100000)%>%
mutate(colegios = (colegios/pop)*100000)%>%
mutate(areasjuego = (areasjuego/pop)*100000)%>%
mutate(parques = (parques/pop)*100000)%>%
mutate(arperros = (arperros/pop)*100000)%>%
mutate(de_conv_ciu = (de_conv_ciu/pop)*100000)%>%
mutate(molespub = (molespub/pop)*100000)%>%
mutate(conocidos_mossos = (conocidos_mossos/pop)*100000)%>%
mutate(detenciones = (detenciones/pop)*100000)
df$frec_delitos_lug<-NULL
df$Victimas_res<-NULL
df$encuestadosXdis<-NULL
df$co_moss<-NULL
df$co_Gub<-NULL
hechospoli <- fread('hechos_policia.csv', encoding= 'Latin-1')
hechospoli[,2:3]<-NULL
hechospoli<-as.data.frame(hechospoli[2:11,])
# Limpiamos los datos, ya que vienen en formato chr y los pasamos a numerico
for (i in 1:10){
for(j in 2:76){
hechospoli[i,j]<-str_replace_all(hechospoli[i,j],"[[:punct:]]", "") # Eliminamos los puntos
hechospoli[i,j]<-str_replace_all(hechospoli[i,j],"[\\s]+", "") # Eliminamos los espacios
}}
for(j in 2:76){
hechospoli[,j]<-as.numeric(hechospoli[,j])
}
hechospoli <- hechospoli[order(hechospoli$V1),]
propiedad<-rowSums(hechospoli[,c(2,3,5,9,10,21,27:29,48,55:58,68,72,75)])
residenciales<-rowSums(hechospoli[,c(12,22,36)])
sexuales<-rowSums(hechospoli[,c(18,20,38,43,46)])
violentos<-rowSums(hechospoli[,c(4,8,11,15,24,31,41,45,50,52,62,65,67,74,76)])
df<-cbind(df,propiedad,residenciales,sexuales,violentos)
#df<-df[,c(1,3:25)]
#write.csv(df, file="datosg3.csv")
df <- df %>%
mutate(propiedad = (propiedad/pop)*100000)%>%
mutate(residenciales = (residenciales/pop)*100000)%>%
mutate(sexuales = (sexuales/pop)*100000)%>%
mutate(violentos = (violentos/pop)*100000)
df<-df[,c(1,3:25)]
Gráficos.
ggplot(data=df)+
geom_point(mapping = aes(x = distrito, y = propiedad, color = 'propiedad',group = 'propiedad'))+
geom_line(mapping = aes(x = distrito, y = propiedad, color = 'propiedad',group = 'propiedad'))+
geom_point(mapping = aes(x = distrito, y = violentos, color = 'violentos',group = 'violentos'))+
geom_line(mapping = aes(x = distrito, y = violentos, color = 'violentos',group = 'violentos'))+
geom_point(mapping = aes(x = distrito, y = residenciales, color = 'residenciales',group = 'residenciales'))+
geom_line(mapping = aes(x = distrito, y = residenciales, color = 'residenciales',group = 'residenciales'))+
geom_point(mapping = aes(x = distrito, y = sexuales, color = 'sexuales',group = 'sexuales'))+
geom_line(mapping = aes(x = distrito, y = sexuales, color = 'sexuales',group = 'sexuales'))+
xlab("Distrito")+
ylab("Delitos 100.000h")+
ggtitle("Delitos por distrito")+
theme (plot.title = element_text(vjust=2, hjust = 1/2),axis.text.x = element_text(face = "bold", angle = 45, hjust = 1, size = 10))
ggplot(data=df)+
geom_point(mapping = aes(x = distrito, y = coincide, color = 'coincide',group = 'coincide'))+
geom_line(mapping = aes(x = distrito, y = coincide, color = 'coincide',group = 'coincide'))+
geom_point(mapping = aes(x = distrito, y = VAL_SEGUR_BARRI, color = 'VAL_SEGUR_BARRI',group = 'VAL_SEGUR_BARRI'))+
geom_line(mapping = aes(x = distrito, y = VAL_SEGUR_BARRI, color = 'VAL_SEGUR_BARRI',group = 'VAL_SEGUR_BARRI'))+
geom_point(mapping = aes(x = distrito, y = VAL_SEGUR, color = 'VAL_SEGUR',group = 'VAL_SEGUR'))+
geom_line(mapping = aes(x = distrito, y = VAL_SEGUR, color = 'VAL_SEGUR',group = 'VAL_SEGUR'))+
xlab("Distrito")+
ylab("")+
ggtitle("Valoración de la seguridad y coincidencia
lugar del hecho y de la residencia")+
theme (plot.title = element_text(vjust=2, hjust = 1/2),axis.text.x = element_text(face = "bold", angle = 45, hjust = 1, size = 10))
ggplot(data=df)+
geom_point(mapping = aes(x = distrito, y = renta/1000, color = 'renta en miles',group = 'renta'))+
geom_line(mapping = aes(x = distrito, y = renta/1000, color = 'renta en miles',group = 'renta'))+
geom_point(mapping = aes(x = distrito, y = colegios, color = 'colegios',group = 'colegios'))+
geom_line(mapping = aes(x = distrito, y = colegios, color = 'colegios',group = 'colegios'))+
geom_point(mapping = aes(x = distrito, y = parques, color = 'parques',group = 'parques'))+
geom_line(mapping = aes(x = distrito, y = parques, color = 'parques',group = 'parques'))+
geom_point(mapping = aes(x = distrito, y = areasjuego, color = 'areas de juego',group = 'areasjuego'))+
geom_line(mapping = aes(x = distrito, y = areasjuego, color = 'areas de juego',group = 'areasjuego'))+
geom_point(mapping = aes(x = distrito, y = arperros, color = 'areas perros',group = 'arperros'))+
geom_line(mapping = aes(x = distrito, y = arperros, color = 'areas perros',group = 'arperros'))+
xlab("Distrito")+
ylab("Delitos/100.000h")+
ggtitle("Delitos por distrito")+
theme (plot.title = element_text(vjust=2, hjust = 1/2),axis.text.x = element_text(face = "bold", angle = 45, hjust = 1, size = 10))
Matriz de correlaciones.
R<-cor(Filter(is.numeric, df[,c(1:7,9:16,19:24)]), method="pearson")
knitr::kable(R, digits =2,caption = "Correlaciones")
| porex | VAL_MOSSOS | VAL_GUB | VAL_SEGUR_BARRI | VAL_SEGUR | esta_licor | coincide | renta | colegios | areasjuego | parques | arperros | de_conv_ciu | molespub | indicevictimi | comisarias | propiedad | residenciales | sexuales | violentos | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| porex | 1.00 | -0.48 | -0.01 | -0.89 | -0.22 | 0.87 | 0.87 | -0.47 | -0.58 | -0.48 | 0.00 | -0.66 | 0.96 | 0.98 | 0.85 | 0.12 | 0.96 | 0.85 | 0.98 | 0.98 |
| VAL_MOSSOS | -0.48 | 1.00 | 0.30 | 0.29 | 0.43 | -0.60 | -0.73 | -0.41 | 0.26 | 0.59 | -0.64 | 0.01 | -0.45 | -0.43 | -0.48 | -0.24 | -0.62 | -0.04 | -0.54 | -0.49 |
| VAL_GUB | -0.01 | 0.30 | 1.00 | -0.07 | 0.20 | 0.01 | -0.11 | -0.12 | 0.48 | 0.35 | -0.27 | -0.04 | 0.04 | 0.06 | -0.16 | 0.38 | -0.17 | 0.34 | -0.01 | -0.02 |
| VAL_SEGUR_BARRI | -0.89 | 0.29 | -0.07 | 1.00 | 0.06 | -0.58 | -0.74 | 0.64 | 0.52 | 0.16 | 0.13 | 0.68 | -0.88 | -0.87 | -0.72 | 0.07 | -0.78 | -0.89 | -0.93 | -0.89 |
| VAL_SEGUR | -0.22 | 0.43 | 0.20 | 0.06 | 1.00 | -0.36 | -0.25 | -0.42 | -0.17 | 0.73 | -0.14 | -0.25 | -0.27 | -0.25 | -0.35 | -0.17 | -0.22 | 0.12 | -0.21 | -0.16 |
| esta_licor | 0.87 | -0.60 | 0.01 | -0.58 | -0.36 | 1.00 | 0.83 | -0.11 | -0.47 | -0.72 | 0.24 | -0.49 | 0.82 | 0.84 | 0.81 | 0.24 | 0.91 | 0.60 | 0.80 | 0.83 |
| coincide | 0.87 | -0.73 | -0.11 | -0.74 | -0.25 | 0.83 | 1.00 | -0.12 | -0.55 | -0.47 | 0.31 | -0.44 | 0.84 | 0.84 | 0.76 | 0.06 | 0.93 | 0.59 | 0.89 | 0.90 |
| renta | -0.47 | -0.41 | -0.12 | 0.64 | -0.42 | -0.11 | -0.12 | 1.00 | 0.57 | -0.24 | 0.53 | 0.81 | -0.38 | -0.42 | -0.21 | 0.33 | -0.28 | -0.74 | -0.43 | -0.43 |
| colegios | -0.58 | 0.26 | 0.48 | 0.52 | -0.17 | -0.47 | -0.55 | 0.57 | 1.00 | 0.30 | -0.12 | 0.81 | -0.40 | -0.43 | -0.43 | 0.53 | -0.60 | -0.41 | -0.53 | -0.54 |
| areasjuego | -0.48 | 0.59 | 0.35 | 0.16 | 0.73 | -0.72 | -0.47 | -0.24 | 0.30 | 1.00 | -0.49 | 0.19 | -0.38 | -0.41 | -0.50 | -0.02 | -0.55 | -0.09 | -0.43 | -0.40 |
| parques | 0.00 | -0.64 | -0.27 | 0.13 | -0.14 | 0.24 | 0.31 | 0.53 | -0.12 | -0.49 | 1.00 | 0.05 | -0.12 | -0.10 | -0.02 | -0.17 | 0.18 | -0.26 | 0.09 | 0.01 |
| arperros | -0.66 | 0.01 | -0.04 | 0.68 | -0.25 | -0.49 | -0.44 | 0.81 | 0.81 | 0.19 | 0.05 | 1.00 | -0.47 | -0.52 | -0.41 | 0.45 | -0.54 | -0.73 | -0.60 | -0.57 |
| de_conv_ciu | 0.96 | -0.45 | 0.04 | -0.88 | -0.27 | 0.82 | 0.84 | -0.38 | -0.40 | -0.38 | -0.12 | -0.47 | 1.00 | 0.99 | 0.88 | 0.27 | 0.92 | 0.82 | 0.95 | 0.97 |
| molespub | 0.98 | -0.43 | 0.06 | -0.87 | -0.25 | 0.84 | 0.84 | -0.42 | -0.43 | -0.41 | -0.10 | -0.52 | 0.99 | 1.00 | 0.85 | 0.27 | 0.93 | 0.85 | 0.96 | 0.98 |
| indicevictimi | 0.85 | -0.48 | -0.16 | -0.72 | -0.35 | 0.81 | 0.76 | -0.21 | -0.43 | -0.50 | -0.02 | -0.41 | 0.88 | 0.85 | 1.00 | 0.13 | 0.85 | 0.58 | 0.80 | 0.83 |
| comisarias | 0.12 | -0.24 | 0.38 | 0.07 | -0.17 | 0.24 | 0.06 | 0.33 | 0.53 | -0.02 | -0.17 | 0.45 | 0.27 | 0.27 | 0.13 | 1.00 | 0.15 | 0.09 | 0.10 | 0.17 |
| propiedad | 0.96 | -0.62 | -0.17 | -0.78 | -0.22 | 0.91 | 0.93 | -0.28 | -0.60 | -0.55 | 0.18 | -0.54 | 0.92 | 0.93 | 0.85 | 0.15 | 1.00 | 0.71 | 0.94 | 0.97 |
| residenciales | 0.85 | -0.04 | 0.34 | -0.89 | 0.12 | 0.60 | 0.59 | -0.74 | -0.41 | -0.09 | -0.26 | -0.73 | 0.82 | 0.85 | 0.58 | 0.09 | 0.71 | 1.00 | 0.84 | 0.84 |
| sexuales | 0.98 | -0.54 | -0.01 | -0.93 | -0.21 | 0.80 | 0.89 | -0.43 | -0.53 | -0.43 | 0.09 | -0.60 | 0.95 | 0.96 | 0.80 | 0.10 | 0.94 | 0.84 | 1.00 | 0.98 |
| violentos | 0.98 | -0.49 | -0.02 | -0.89 | -0.16 | 0.83 | 0.90 | -0.43 | -0.54 | -0.40 | 0.01 | -0.57 | 0.97 | 0.98 | 0.83 | 0.17 | 0.97 | 0.84 | 0.98 | 1.00 |
corrplot(cor(Filter(is.numeric, df), use="pairwise", method="pearson"), method = "circle",type = "upper", number.cex = 0.4)
options(ggrepel.max.overlaps = Inf)
fit<-PCA(R,scale.unit=TRUE,ncp=2,graph=TRUE)
eig<-get_eigenvalue(fit)
knitr::kable(eig, digits =2,caption = "Autovalores")
| eigenvalue | variance.percent | cumulative.variance.percent | |
|---|---|---|---|
| Dim.1 | 14.20 | 70.99 | 70.99 |
| Dim.2 | 3.52 | 17.58 | 88.57 |
| Dim.3 | 1.66 | 8.32 | 96.89 |
| Dim.4 | 0.34 | 1.71 | 98.60 |
| Dim.5 | 0.20 | 1.00 | 99.60 |
| Dim.6 | 0.06 | 0.29 | 99.89 |
| Dim.7 | 0.01 | 0.07 | 99.96 |
| Dim.8 | 0.01 | 0.03 | 99.99 |
| Dim.9 | 0.00 | 0.01 | 100.00 |
| Dim.10 | 0.00 | 0.00 | 100.00 |
| Dim.11 | 0.00 | 0.00 | 100.00 |
| Dim.12 | 0.00 | 0.00 | 100.00 |
| Dim.13 | 0.00 | 0.00 | 100.00 |
| Dim.14 | 0.00 | 0.00 | 100.00 |
| Dim.15 | 0.00 | 0.00 | 100.00 |
| Dim.16 | 0.00 | 0.00 | 100.00 |
| Dim.17 | 0.00 | 0.00 | 100.00 |
| Dim.18 | 0.00 | 0.00 | 100.00 |
| Dim.19 | 0.00 | 0.00 | 100.00 |
fviz_eig(fit,addlabels=TRUE)
Con 2 dimensiones explicamos más del 90.32% de la varianza. A partir de la 4ª dimensión encontramos autovalores inferiores a 1. A continuación podemos ver cómo correlacionan las variables con cada componente.
Componente 1: Correlación positiva: porcentaje de extranjeros, establecimientos de venta de alcohol, denuncias a la policia, coincidencia de delitos, numero de delitos en general y sus diferentes tipologías. Correlación negativa: valoración de los mossos, de la guardia urbana, de la seguridad del barrio, renta, colegios, areas de juego, areas para perros, denuncias de convivencia, quejas en espacios públicos.
Componente 2: Correlación positiva: valoración de los mosos y de la guardia urbana, valoración de la seguridad de Barcelona en general, delitos residenciales. Correlación negativa: renta, areas de juego, parques, áreas de perros, comisarías.
var<-get_pca_var(fit)
knitr::kable(var$cor, digits =2,caption = "Correlaciones de la CP con las variables")
| Dim.1 | Dim.2 | |
|---|---|---|
| porex | 0.99 | 0.08 |
| VAL_MOSSOS | -0.78 | 0.61 |
| VAL_GUB | -0.36 | 0.59 |
| VAL_SEGUR_BARRI | -0.96 | -0.25 |
| VAL_SEGUR | -0.47 | 0.76 |
| esta_licor | 0.98 | -0.15 |
| coincide | 0.99 | -0.12 |
| renta | -0.63 | -0.77 |
| colegios | -0.91 | -0.18 |
| areasjuego | -0.80 | 0.57 |
| parques | 0.19 | -0.82 |
| arperros | -0.87 | -0.42 |
| de_conv_ciu | 0.99 | 0.07 |
| molespub | 0.99 | 0.08 |
| indicevictimi | 0.99 | -0.06 |
| comisarias | -0.05 | -0.37 |
| propiedad | 1.00 | -0.05 |
| residenciales | 0.91 | 0.40 |
| sexuales | 1.00 | 0.06 |
| violentos | 0.99 | 0.07 |
corrplot(var$cos2,is.corr=FALSE)
rownames(df)<-(df$distrito)
num<-Filter(is.numeric, df[,c(1:7,9:16,19:24)])
fit<-PCA(num,scale.unit=TRUE,ncp=2,graph=TRUE)
fviz_pca_biplot(fit,axes = c(1, 2), repel = TRUE, col.var = "#2E9FDF",col.ind = "#696969")
fviz_contrib(fit, choice="var", axes = 1)
fviz_contrib(fit, choice="var", axes = 2)
fviz_pca_var(fit, axes = c(1, 2), col.var="cos2", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),repel = TRUE )
knitr::kable(var$contrib, digits =2,caption = "Contribuciones")
| Dim.1 | Dim.2 | |
|---|---|---|
| porex | 6.97 | 0.17 |
| VAL_MOSSOS | 4.23 | 10.43 |
| VAL_GUB | 0.93 | 9.73 |
| VAL_SEGUR_BARRI | 6.52 | 1.83 |
| VAL_SEGUR | 1.58 | 16.49 |
| esta_licor | 6.78 | 0.63 |
| coincide | 6.88 | 0.38 |
| renta | 2.82 | 16.70 |
| colegios | 5.84 | 0.95 |
| areasjuego | 4.49 | 9.11 |
| parques | 0.24 | 19.20 |
| arperros | 5.39 | 5.13 |
| de_conv_ciu | 6.84 | 0.13 |
| molespub | 6.85 | 0.19 |
| indicevictimi | 6.88 | 0.09 |
| comisarias | 0.02 | 3.91 |
| propiedad | 7.01 | 0.06 |
| residenciales | 5.78 | 4.63 |
| sexuales | 6.98 | 0.10 |
| violentos | 6.96 | 0.15 |
corrplot(var$contrib,is.corr=FALSE)
Representamos un mapa de calor de la matriz de datos, estandarizado y sin estandarizar para ver si se detectan inicialmente grupos de distritos.
num<-Filter(is.numeric, df[,c(1:7,9:16,19:24)])
numest<-scale(num) #Primero estandarizamos los datos para tener media igual a cero
heatmaply(num, seriate = "mean", row_dend_left = TRUE, plot_method = "plotly")
heatmaply(numest, seriate = "mean", row_dend_left = TRUE, plot_method = "plotly")
¡